One challenge of working within a large, distribution computing environment is identifying and locating resources such as users, groups, print queues, documents, etc. A directory service is part of a distributed computing environment that provides a way to locate and identify the users and resources available in the system. A directory service is like a phone directory. Given a name for a person or a resource, it provides the information necessary to access that person or resource. A user does not have to use specific information to access the resource on the network.
However, most enterprises have many different directories in place. For example, network operating systems, electronic mail systems, and applications known as “groupware” applications all have their own directories. Network resource directories include Microsoft Active Directory, Lightweight Directory Access Protocol (LDAP)-based directories, Distributed Component Environment (DCE) cell directory services, Banyan StreetTalk, and Novel Directory Services. Application-specific directories include those associated with Lotus Notes, cc:Mail, and Microsoft Exchange.
Thus, issues arise when a single enterprise deploys multiple directories. These issues include usability, data consistency, development cost, and support cost, among other issues. End users face multiple logons and a variety of interfaces to information across multiple directories. Administrators face the complexity of managing multiple directories. Developers face an additional dilemma: which directory service to use. Each directory offers unique application interfaces. Developers must choose a specific directory implementation, or support multiple versions of their application. As a result, developers seldom use existing directory services. Directory service interfaces address these issues by providing a single, consistent, open set of interfaces for managing and using multiple directories. Directory service interfaces make it easier for developers to build applications that register with, access, and manage multiple directory services, with a single set of well-defined interfaces. Directory service interfaces abstract the capabilities of directory services from different network providers to present a single set of directory service interfaces for managing network resources. Thus, administrators and developers can use such interfaces to enumerate and manage the resources in a directory service, no matter which network environment contains the resource.
Directory service interfaces therefore make it easier to perform common administrative tasks, such as adding new users, managing printers, and locating resources throughout the distributed computing environment. Furthermore, directory service interfaces make it easier for developers to “directory enable” their applications. Administrators and developers deal with a single set of directory service interfaces, regardless of the installed directory service or services.
A disadvantage to directory service interfaces found in the prior art, however, is that they have a preset and somewhat limited functionality. That is, the interfaces themselves are predefined. Developers cannot add other interfaces to the directory service interfaces. These means that the developer cannot add functionality that he or she might wish to develop and add to or integrate with the directory service interfaces. This acts as a limitation on directory service interfaces, and for this and other reasons, there is a need for the present invention.